package pe.edu.claretiano.admisionmatricula.admision.daoimpl;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;

import pe.edu.claretiano.admisionmatricula.admision.dao.ResultadoAdmisionDao;
import pe.edu.claretiano.admisionmatricula.bean.Matricula;
import pe.edu.claretiano.admisionmatricula.bean.ResuladoAdmision;
import pe.edu.claretiano.admisionmatricula.bean.SolicitudMatricula;
import pe.edu.claretiano.admisionmatricula.bean.Vacante;
import pe.edu.claretiano.admisionmatricula.factory.MyBatisConnectionFactory;

public class ResultadoAdmisionDaoImpl implements ResultadoAdmisionDao {
	
	private final static Logger logResultadoAdmisionDaoImpl = Logger.getLogger(ResultadoAdmisionDaoImpl.class);

	private SqlSessionFactory sqlSessionFactory;

	public ResultadoAdmisionDaoImpl() {

		sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();

	}

	@Override
	public Vacante obtenerVacante(Matricula matricula) {
		SqlSession session = sqlSessionFactory.openSession();
		Vacante objVacante = null;
		
		try {
			objVacante = (Vacante) session.selectOne("ResultadoAdmision.obtenerVacantes", matricula);
		} catch (Exception ex) {
			logResultadoAdmisionDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return objVacante;
	}

	@Override
	public List<ResuladoAdmision> obtenerPostulantes(Matricula matricula) {
		SqlSession session = sqlSessionFactory.openSession();
		List<ResuladoAdmision> lstResuladoAdmision = new ArrayList<ResuladoAdmision>();
		
		try {
			lstResuladoAdmision = (List<ResuladoAdmision>) session.selectList("ResultadoAdmision.obtenerPostulantes", matricula);
		} catch (Exception ex) {
			logResultadoAdmisionDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return lstResuladoAdmision;
		
	}

	@Override
	public Integer actualizarAdmitir(ResuladoAdmision resuladoAdmision) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado = 0;
		try {
			resultado = session.update("ResultadoAdmision.actualizarAdmitir",	resuladoAdmision);
			session.commit();
		} catch (Exception ex) {
			logResultadoAdmisionDaoImpl.error(ex.getMessage());
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}

	@Override
	public Integer actualizarNoAdmitir(ResuladoAdmision resuladoAdmision) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado = 0;
		try {
			resultado = session.update("ResultadoAdmision.actualizarNoAdmitir",	resuladoAdmision);
			session.commit();
		} catch (Exception ex) {
			logResultadoAdmisionDaoImpl.error(ex.getMessage());
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}

}
